<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::RegionGrowingRGB&lt; PointT, NormalT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_region_growing_r_g_b.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="classpcl_1_1_region_growing_r_g_b-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::RegionGrowingRGB&lt; PointT, NormalT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p>Implements the well known Region Growing algorithm used for segmentation based on color of points. Description can be found in the article "Color-based segmentation of point clouds" by Qingming Zhan, Yubin Liang, Yinghui Xiao  
 <a href="classpcl_1_1_region_growing_r_g_b.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="region__growing__rgb_8h_source.html">region_growing_rgb.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::RegionGrowingRGB&lt; PointT, NormalT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1_region_growing_r_g_b.png" usemap="#pcl::RegionGrowingRGB_3C_20PointT_2C_20NormalT_20_3E_map" alt=""/>
  <map id="pcl::RegionGrowingRGB_3C_20PointT_2C_20NormalT_20_3E_map" name="pcl::RegionGrowingRGB_3C_20PointT_2C_20NormalT_20_3E_map">
<area href="classpcl_1_1_region_growing.html" alt="pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;" shape="rect" coords="0,56,261,80"/>
<area href="classpcl_1_1_p_c_l_base.html" title="PCL base class. Implements methods that are used by most PCL algorithms." alt="pcl::PCLBase&lt; PointT &gt;" shape="rect" coords="0,0,261,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a74a0032e342ceaa0e1831379e20858a5"><td class="memItemLeft" align="right" valign="top"><a id="a74a0032e342ceaa0e1831379e20858a5"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a74a0032e342ceaa0e1831379e20858a5">RegionGrowingRGB</a> ()</td></tr>
<tr class="memdesc:a74a0032e342ceaa0e1831379e20858a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor that sets default values for member variables. <br /></td></tr>
<tr class="separator:a74a0032e342ceaa0e1831379e20858a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f47e740b8d6f6cb9eb103f97ff8e5e3"><td class="memItemLeft" align="right" valign="top"><a id="a5f47e740b8d6f6cb9eb103f97ff8e5e3"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a5f47e740b8d6f6cb9eb103f97ff8e5e3">~RegionGrowingRGB</a> ()</td></tr>
<tr class="memdesc:a5f47e740b8d6f6cb9eb103f97ff8e5e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor that frees memory. <br /></td></tr>
<tr class="separator:a5f47e740b8d6f6cb9eb103f97ff8e5e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16e1ea7b450eb9c02e6009d1951b549f"><td class="memItemLeft" align="right" valign="top"><a id="a16e1ea7b450eb9c02e6009d1951b549f"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a16e1ea7b450eb9c02e6009d1951b549f">getPointColorThreshold</a> () const</td></tr>
<tr class="memdesc:a16e1ea7b450eb9c02e6009d1951b549f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the color threshold value used for testing if points belong to the same region. <br /></td></tr>
<tr class="separator:a16e1ea7b450eb9c02e6009d1951b549f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae23969f865f015f1010a1e72a56aaf48"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#ae23969f865f015f1010a1e72a56aaf48">setPointColorThreshold</a> (float thresh)</td></tr>
<tr class="memdesc:ae23969f865f015f1010a1e72a56aaf48"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method specifies the threshold value for color test between the points. This kind of testing is made at the first stage of the algorithm(region growing). If the difference between points color is less than threshold value, then they are considered to be in the same region.  <a href="classpcl_1_1_region_growing_r_g_b.html#ae23969f865f015f1010a1e72a56aaf48">更多...</a><br /></td></tr>
<tr class="separator:ae23969f865f015f1010a1e72a56aaf48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad491c40b430a3cce68cbd54f40a8b52e"><td class="memItemLeft" align="right" valign="top"><a id="ad491c40b430a3cce68cbd54f40a8b52e"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#ad491c40b430a3cce68cbd54f40a8b52e">getRegionColorThreshold</a> () const</td></tr>
<tr class="memdesc:ad491c40b430a3cce68cbd54f40a8b52e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the color threshold value used for testing if regions can be merged. <br /></td></tr>
<tr class="separator:ad491c40b430a3cce68cbd54f40a8b52e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a152ff87cb08e3ef339ec92e339d08ffd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a152ff87cb08e3ef339ec92e339d08ffd">setRegionColorThreshold</a> (float thresh)</td></tr>
<tr class="memdesc:a152ff87cb08e3ef339ec92e339d08ffd"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method specifies the threshold value for color test between the regions. This kind of testing is made at the second stage of the algorithm(region merging). If the difference between segments color is less than threshold value, then they are merged together.  <a href="classpcl_1_1_region_growing_r_g_b.html#a152ff87cb08e3ef339ec92e339d08ffd">更多...</a><br /></td></tr>
<tr class="separator:a152ff87cb08e3ef339ec92e339d08ffd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59c5a3001175ce1fa3bb8663970a5305"><td class="memItemLeft" align="right" valign="top"><a id="a59c5a3001175ce1fa3bb8663970a5305"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a59c5a3001175ce1fa3bb8663970a5305">getDistanceThreshold</a> () const</td></tr>
<tr class="memdesc:a59c5a3001175ce1fa3bb8663970a5305"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the distance threshold. If the distance between two points is less or equal to distance threshold value, then those points assumed to be neighbouring points. <br /></td></tr>
<tr class="separator:a59c5a3001175ce1fa3bb8663970a5305"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1500b628d0e3321a57c2deee0d007e47"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a1500b628d0e3321a57c2deee0d007e47">setDistanceThreshold</a> (float thresh)</td></tr>
<tr class="memdesc:a1500b628d0e3321a57c2deee0d007e47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to set distance threshold.  <a href="classpcl_1_1_region_growing_r_g_b.html#a1500b628d0e3321a57c2deee0d007e47">更多...</a><br /></td></tr>
<tr class="separator:a1500b628d0e3321a57c2deee0d007e47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c4e18abf46a2884f3c3962c73c57142"><td class="memItemLeft" align="right" valign="top"><a id="a2c4e18abf46a2884f3c3962c73c57142"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a2c4e18abf46a2884f3c3962c73c57142">getNumberOfRegionNeighbours</a> () const</td></tr>
<tr class="memdesc:a2c4e18abf46a2884f3c3962c73c57142"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of nearest neighbours used for searching K nearest segments. Note that here it refers to the segments(not the points). <br /></td></tr>
<tr class="separator:a2c4e18abf46a2884f3c3962c73c57142"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ada7a371b5ac47ac5fb9543716a82d2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a4ada7a371b5ac47ac5fb9543716a82d2">setNumberOfRegionNeighbours</a> (unsigned int nghbr_number)</td></tr>
<tr class="memdesc:a4ada7a371b5ac47ac5fb9543716a82d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method allows to set the number of neighbours that is used for finding neighbouring segments. Neighbouring segments are needed for the merging process.  <a href="classpcl_1_1_region_growing_r_g_b.html#a4ada7a371b5ac47ac5fb9543716a82d2">更多...</a><br /></td></tr>
<tr class="separator:a4ada7a371b5ac47ac5fb9543716a82d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b9a3a3cd11d45f71ab71acf36620b9b"><td class="memItemLeft" align="right" valign="top"><a id="a6b9a3a3cd11d45f71ab71acf36620b9b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a6b9a3a3cd11d45f71ab71acf36620b9b">getNormalTestFlag</a> () const</td></tr>
<tr class="memdesc:a6b9a3a3cd11d45f71ab71acf36620b9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the flag that signalize if the smoothness test is turned on/off. <br /></td></tr>
<tr class="separator:a6b9a3a3cd11d45f71ab71acf36620b9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45b2f1a7947503a313da4b0e3228284a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a45b2f1a7947503a313da4b0e3228284a">setNormalTestFlag</a> (bool value)</td></tr>
<tr class="memdesc:a45b2f1a7947503a313da4b0e3228284a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to turn on/off the smoothness test.  <a href="classpcl_1_1_region_growing_r_g_b.html#a45b2f1a7947503a313da4b0e3228284a">更多...</a><br /></td></tr>
<tr class="separator:a45b2f1a7947503a313da4b0e3228284a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2bd79d30676cddeb1bdb1fbf5facf50"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#af2bd79d30676cddeb1bdb1fbf5facf50">setCurvatureTestFlag</a> (bool value)</td></tr>
<tr class="memdesc:af2bd79d30676cddeb1bdb1fbf5facf50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to turn on/off the curvature test.  <a href="classpcl_1_1_region_growing_r_g_b.html#af2bd79d30676cddeb1bdb1fbf5facf50">更多...</a><br /></td></tr>
<tr class="separator:af2bd79d30676cddeb1bdb1fbf5facf50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ee93524947e897d1f42f50e2e3f91b4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a9ee93524947e897d1f42f50e2e3f91b4">setResidualTestFlag</a> (bool value)</td></tr>
<tr class="memdesc:a9ee93524947e897d1f42f50e2e3f91b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to turn on/off the residual test.  <a href="classpcl_1_1_region_growing_r_g_b.html#a9ee93524947e897d1f42f50e2e3f91b4">更多...</a><br /></td></tr>
<tr class="separator:a9ee93524947e897d1f42f50e2e3f91b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9171a8be4eec4a3d841a2fe0b28234a9"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a9171a8be4eec4a3d841a2fe0b28234a9">extract</a> (std::vector&lt; <a class="el" href="structpcl_1_1_point_indices.html">pcl::PointIndices</a> &gt; &amp;clusters)</td></tr>
<tr class="memdesc:a9171a8be4eec4a3d841a2fe0b28234a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method launches the segmentation algorithm and returns the clusters that were obtained during the segmentation.  <a href="classpcl_1_1_region_growing_r_g_b.html#a9171a8be4eec4a3d841a2fe0b28234a9">更多...</a><br /></td></tr>
<tr class="separator:a9171a8be4eec4a3d841a2fe0b28234a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada29f9c9d4c8719ff00ce4d1ef8be55a"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#ada29f9c9d4c8719ff00ce4d1ef8be55a">getSegmentFromPoint</a> (int index, <a class="el" href="structpcl_1_1_point_indices.html">pcl::PointIndices</a> &amp;cluster)</td></tr>
<tr class="memdesc:ada29f9c9d4c8719ff00ce4d1ef8be55a"><td class="mdescLeft">&#160;</td><td class="mdescRight">For a given point this function builds a segment to which it belongs and returns this segment.  <a href="classpcl_1_1_region_growing_r_g_b.html#ada29f9c9d4c8719ff00ce4d1ef8be55a">更多...</a><br /></td></tr>
<tr class="separator:ada29f9c9d4c8719ff00ce4d1ef8be55a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_region_growing"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_region_growing')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;</a></td></tr>
<tr class="memitem:a32553136086e9bab3f0f9482ae088576 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a32553136086e9bab3f0f9482ae088576"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a32553136086e9bab3f0f9482ae088576">RegionGrowing</a> ()</td></tr>
<tr class="memdesc:a32553136086e9bab3f0f9482ae088576 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor that sets default values for member variables. <br /></td></tr>
<tr class="separator:a32553136086e9bab3f0f9482ae088576 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd5307cad362027812ce6703af129046 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="abd5307cad362027812ce6703af129046"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#abd5307cad362027812ce6703af129046">~RegionGrowing</a> ()</td></tr>
<tr class="memdesc:abd5307cad362027812ce6703af129046 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">This destructor destroys the cloud, normals and search method used for finding KNN. In other words it frees memory. <br /></td></tr>
<tr class="separator:abd5307cad362027812ce6703af129046 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a503eb2ff26d2ff282332c62665cdf451 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a503eb2ff26d2ff282332c62665cdf451"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a503eb2ff26d2ff282332c62665cdf451">getMinClusterSize</a> ()</td></tr>
<tr class="memdesc:a503eb2ff26d2ff282332c62665cdf451 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the minimum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:a503eb2ff26d2ff282332c62665cdf451 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac040a7d547bb09b295386045725aa848 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="ac040a7d547bb09b295386045725aa848"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#ac040a7d547bb09b295386045725aa848">setMinClusterSize</a> (int min_cluster_size)</td></tr>
<tr class="memdesc:ac040a7d547bb09b295386045725aa848 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the minimum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:ac040a7d547bb09b295386045725aa848 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bef7a2920c179c99928acc7474c41ab inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a7bef7a2920c179c99928acc7474c41ab"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a7bef7a2920c179c99928acc7474c41ab">getMaxClusterSize</a> ()</td></tr>
<tr class="memdesc:a7bef7a2920c179c99928acc7474c41ab inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:a7bef7a2920c179c99928acc7474c41ab inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51294408aa0da3e72690e9ab03bae90d inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a51294408aa0da3e72690e9ab03bae90d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a51294408aa0da3e72690e9ab03bae90d">setMaxClusterSize</a> (int max_cluster_size)</td></tr>
<tr class="memdesc:a51294408aa0da3e72690e9ab03bae90d inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:a51294408aa0da3e72690e9ab03bae90d inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae14b6b9cb6a6aaf8872c3c965f2e6e00 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="ae14b6b9cb6a6aaf8872c3c965f2e6e00"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#ae14b6b9cb6a6aaf8872c3c965f2e6e00">getSmoothModeFlag</a> () const</td></tr>
<tr class="memdesc:ae14b6b9cb6a6aaf8872c3c965f2e6e00 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the flag value. This flag signalizes which mode of algorithm will be used. If it is set to true than it will work as said in the article. This means that it will be testing the angle between normal of the current point and it's neighbours normal. Otherwise, it will be testing the angle between normal of the current point and normal of the initial point that was chosen for growing new segment. <br /></td></tr>
<tr class="separator:ae14b6b9cb6a6aaf8872c3c965f2e6e00 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af10c614af98ec42bacf015f7db6b9935 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#af10c614af98ec42bacf015f7db6b9935">setSmoothModeFlag</a> (bool value)</td></tr>
<tr class="memdesc:af10c614af98ec42bacf015f7db6b9935 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function allows to turn on/off the smoothness constraint.  <a href="classpcl_1_1_region_growing.html#af10c614af98ec42bacf015f7db6b9935">更多...</a><br /></td></tr>
<tr class="separator:af10c614af98ec42bacf015f7db6b9935 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa86a85c140e251c5a5d4223482678134 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="aa86a85c140e251c5a5d4223482678134"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aa86a85c140e251c5a5d4223482678134">getCurvatureTestFlag</a> () const</td></tr>
<tr class="memdesc:aa86a85c140e251c5a5d4223482678134 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the flag that signalize if the curvature test is turned on/off. <br /></td></tr>
<tr class="separator:aa86a85c140e251c5a5d4223482678134 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07f77c72b5c223988455944f8a86dc03 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a07f77c72b5c223988455944f8a86dc03"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a07f77c72b5c223988455944f8a86dc03">getResidualTestFlag</a> () const</td></tr>
<tr class="memdesc:a07f77c72b5c223988455944f8a86dc03 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the flag that signalize if the residual test is turned on/off. <br /></td></tr>
<tr class="separator:a07f77c72b5c223988455944f8a86dc03 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a942fc25d32886ee34262e7ff3fe675bf inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a942fc25d32886ee34262e7ff3fe675bf"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a942fc25d32886ee34262e7ff3fe675bf">getSmoothnessThreshold</a> () const</td></tr>
<tr class="memdesc:a942fc25d32886ee34262e7ff3fe675bf inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns smoothness threshold. <br /></td></tr>
<tr class="separator:a942fc25d32886ee34262e7ff3fe675bf inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa88700937bc1090bfca521a93b80f71 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aaa88700937bc1090bfca521a93b80f71">setSmoothnessThreshold</a> (float theta)</td></tr>
<tr class="memdesc:aaa88700937bc1090bfca521a93b80f71 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to set smoothness threshold used for testing the points.  <a href="classpcl_1_1_region_growing.html#aaa88700937bc1090bfca521a93b80f71">更多...</a><br /></td></tr>
<tr class="separator:aaa88700937bc1090bfca521a93b80f71 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a01f23a15454f9c214be1319ff88cc8 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a8a01f23a15454f9c214be1319ff88cc8"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a8a01f23a15454f9c214be1319ff88cc8">getResidualThreshold</a> () const</td></tr>
<tr class="memdesc:a8a01f23a15454f9c214be1319ff88cc8 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns residual threshold. <br /></td></tr>
<tr class="separator:a8a01f23a15454f9c214be1319ff88cc8 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e3de83fe8e15eccc7f56f4f8762d936 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a1e3de83fe8e15eccc7f56f4f8762d936">setResidualThreshold</a> (float residual)</td></tr>
<tr class="memdesc:a1e3de83fe8e15eccc7f56f4f8762d936 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to set residual threshold used for testing the points.  <a href="classpcl_1_1_region_growing.html#a1e3de83fe8e15eccc7f56f4f8762d936">更多...</a><br /></td></tr>
<tr class="separator:a1e3de83fe8e15eccc7f56f4f8762d936 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6463a53955895a5688dddbfcc8c173c2 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a6463a53955895a5688dddbfcc8c173c2"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a6463a53955895a5688dddbfcc8c173c2">getCurvatureThreshold</a> () const</td></tr>
<tr class="memdesc:a6463a53955895a5688dddbfcc8c173c2 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns curvature threshold. <br /></td></tr>
<tr class="separator:a6463a53955895a5688dddbfcc8c173c2 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7554b09a34b2997992c44b947d4ac07 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#ad7554b09a34b2997992c44b947d4ac07">setCurvatureThreshold</a> (float curvature)</td></tr>
<tr class="memdesc:ad7554b09a34b2997992c44b947d4ac07 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to set curvature threshold used for testing the points.  <a href="classpcl_1_1_region_growing.html#ad7554b09a34b2997992c44b947d4ac07">更多...</a><br /></td></tr>
<tr class="separator:ad7554b09a34b2997992c44b947d4ac07 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa649d6423eb7c7e247d9a09bd39ec5e1 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="aa649d6423eb7c7e247d9a09bd39ec5e1"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aa649d6423eb7c7e247d9a09bd39ec5e1">getNumberOfNeighbours</a> () const</td></tr>
<tr class="memdesc:aa649d6423eb7c7e247d9a09bd39ec5e1 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of nearest neighbours used for KNN. <br /></td></tr>
<tr class="separator:aa649d6423eb7c7e247d9a09bd39ec5e1 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d2c77b68143901495b42fd0dfbb241c inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a4d2c77b68143901495b42fd0dfbb241c">setNumberOfNeighbours</a> (unsigned int neighbour_number)</td></tr>
<tr class="memdesc:a4d2c77b68143901495b42fd0dfbb241c inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to set the number of neighbours. For more information check the article.  <a href="classpcl_1_1_region_growing.html#a4d2c77b68143901495b42fd0dfbb241c">更多...</a><br /></td></tr>
<tr class="separator:a4d2c77b68143901495b42fd0dfbb241c inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a9fdb648434826b0bf7cd1a616f85f5 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a9a9fdb648434826b0bf7cd1a616f85f5"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a9a9fdb648434826b0bf7cd1a616f85f5">getSearchMethod</a> () const</td></tr>
<tr class="memdesc:a9a9fdb648434826b0bf7cd1a616f85f5 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the pointer to the search method that is used for KNN. <br /></td></tr>
<tr class="separator:a9a9fdb648434826b0bf7cd1a616f85f5 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23191c1b6a711340a91740b3717140ff inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a23191c1b6a711340a91740b3717140ff">setSearchMethod</a> (const KdTreePtr &amp;tree)</td></tr>
<tr class="memdesc:a23191c1b6a711340a91740b3717140ff inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to set search method that will be used for finding KNN.  <a href="classpcl_1_1_region_growing.html#a23191c1b6a711340a91740b3717140ff">更多...</a><br /></td></tr>
<tr class="separator:a23191c1b6a711340a91740b3717140ff inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60c617a3f8cccfa6c5f5d7e41c7ad14e inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a60c617a3f8cccfa6c5f5d7e41c7ad14e"></a>
NormalPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a60c617a3f8cccfa6c5f5d7e41c7ad14e">getInputNormals</a> () const</td></tr>
<tr class="memdesc:a60c617a3f8cccfa6c5f5d7e41c7ad14e inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns normals. <br /></td></tr>
<tr class="separator:a60c617a3f8cccfa6c5f5d7e41c7ad14e inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26a874b69b4c786886fece175990e727 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a26a874b69b4c786886fece175990e727">setInputNormals</a> (const NormalPtr &amp;norm)</td></tr>
<tr class="memdesc:a26a874b69b4c786886fece175990e727 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method sets the normals. They are needed for the algorithm, so if no normals will be set, the algorithm would not be able to segment the points.  <a href="classpcl_1_1_region_growing.html#a26a874b69b4c786886fece175990e727">更多...</a><br /></td></tr>
<tr class="separator:a26a874b69b4c786886fece175990e727 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb1ae724085424bc60bb4cf27ff27283 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="aeb1ae724085424bc60bb4cf27ff27283"></a>
<a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b.html">pcl::PointXYZRGB</a> &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aeb1ae724085424bc60bb4cf27ff27283">getColoredCloud</a> ()</td></tr>
<tr class="memdesc:aeb1ae724085424bc60bb4cf27ff27283 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the cloud was successfully segmented, then function returns colored cloud. Otherwise it returns an empty pointer. Points that belong to the same segment have the same color. But this function doesn't guarantee that different segments will have different color(it all depends on RNG). Points that were not listed in the indices array will have red color. <br /></td></tr>
<tr class="separator:aeb1ae724085424bc60bb4cf27ff27283 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1aed39b32b17e43362d5d72112e6e3d2 inherit pub_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a1aed39b32b17e43362d5d72112e6e3d2"></a>
<a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a> &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a1aed39b32b17e43362d5d72112e6e3d2">getColoredCloudRGBA</a> ()</td></tr>
<tr class="memdesc:a1aed39b32b17e43362d5d72112e6e3d2 inherit pub_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the cloud was successfully segmented, then function returns colored cloud. Otherwise it returns an empty pointer. Points that belong to the same segment have the same color. But this function doesn't guarantee that different segments will have different color(it all depends on RNG). Points that were not listed in the indices array will have red color. <br /></td></tr>
<tr class="separator:a1aed39b32b17e43362d5d72112e6e3d2 inherit pub_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="af4fbc5eb005057f8a0fc6d60bde595df"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af4fbc5eb005057f8a0fc6d60bde595df">PCLBase</a> ()</td></tr>
<tr class="memdesc:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a7a6dd7a91275d7737cf1b18005b47244"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a7a6dd7a91275d7737cf1b18005b47244">PCLBase</a> (const <a class="el" href="classpcl_1_1_p_c_l_base.html">PCLBase</a> &amp;base)</td></tr>
<tr class="memdesc:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ad5d6846e98e59c37dcc3dc9958d53966"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ad5d6846e98e59c37dcc3dc9958d53966">~PCLBase</a> ()</td></tr>
<tr class="memdesc:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">setInputCloud</a> (const PointCloudConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input dataset  <a href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">更多...</a><br /></td></tr>
<tr class="separator:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a8cd745c4f7a792212f4fc3720b9d46ea"></a>
PointCloudConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a8cd745c4f7a792212f4fc3720b9d46ea">getInputCloud</a> () const</td></tr>
<tr class="memdesc:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset. <br /></td></tr>
<tr class="separator:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">setIndices</a> (const IndicesPtr &amp;indices)</td></tr>
<tr class="memdesc:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">更多...</a><br /></td></tr>
<tr class="separator:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">setIndices</a> (const IndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">更多...</a><br /></td></tr>
<tr class="separator:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">setIndices</a> (const PointIndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">更多...</a><br /></td></tr>
<tr class="separator:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">setIndices</a> (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)</td></tr>
<tr class="memdesc:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the indices for the points laying within an interest region of the point cloud.  <a href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">更多...</a><br /></td></tr>
<tr class="separator:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a058753dd4de73d3d0062fe2e452fba3c"></a>
IndicesPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a058753dd4de73d3d0062fe2e452fba3c">getIndices</a> ()</td></tr>
<tr class="memdesc:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="acae187b37230758959572ceb1e6e2045"></a>
IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acae187b37230758959572ceb1e6e2045">getIndices</a> () const</td></tr>
<tr class="memdesc:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">operator[]</a> (size_t pos) const</td></tr>
<tr class="memdesc:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a> operator[] to shorten code  <a href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">更多...</a><br /></td></tr>
<tr class="separator:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a4d47aae4b7956210fa74f85a4ba540fc"><td class="memItemLeft" align="right" valign="top"><a id="a4d47aae4b7956210fa74f85a4ba540fc"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a4d47aae4b7956210fa74f85a4ba540fc">prepareForSegmentation</a> ()</td></tr>
<tr class="memdesc:a4d47aae4b7956210fa74f85a4ba540fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method simply checks if it is possible to execute the segmentation algorithm with the current settings. If it is possible then it returns true. <br /></td></tr>
<tr class="separator:a4d47aae4b7956210fa74f85a4ba540fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefc4dcc3fbe7ab81dd8a2bad27bb0c36"><td class="memItemLeft" align="right" valign="top"><a id="aefc4dcc3fbe7ab81dd8a2bad27bb0c36"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#aefc4dcc3fbe7ab81dd8a2bad27bb0c36">findPointNeighbours</a> ()</td></tr>
<tr class="memdesc:aefc4dcc3fbe7ab81dd8a2bad27bb0c36"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method finds KNN for each point and saves them to the array because the algorithm needs to find KNN a few times. <br /></td></tr>
<tr class="separator:aefc4dcc3fbe7ab81dd8a2bad27bb0c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adea4bb708dcff1412a93b8ee46c9f05f"><td class="memItemLeft" align="right" valign="top"><a id="adea4bb708dcff1412a93b8ee46c9f05f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#adea4bb708dcff1412a93b8ee46c9f05f">findSegmentNeighbours</a> ()</td></tr>
<tr class="memdesc:adea4bb708dcff1412a93b8ee46c9f05f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method simply calls the findRegionsKNN for each segment and saves the results for later use. <br /></td></tr>
<tr class="separator:adea4bb708dcff1412a93b8ee46c9f05f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35a1ca832b5cf24da14f0bdb853d68ba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a35a1ca832b5cf24da14f0bdb853d68ba">findRegionsKNN</a> (int index, int nghbr_number, std::vector&lt; int &gt; &amp;nghbrs, std::vector&lt; float &gt; &amp;dist)</td></tr>
<tr class="memdesc:a35a1ca832b5cf24da14f0bdb853d68ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method finds K nearest neighbours of the given segment.  <a href="classpcl_1_1_region_growing_r_g_b.html#a35a1ca832b5cf24da14f0bdb853d68ba">更多...</a><br /></td></tr>
<tr class="separator:a35a1ca832b5cf24da14f0bdb853d68ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27cc209fc830c696158e21723fecf9d4"><td class="memItemLeft" align="right" valign="top"><a id="a27cc209fc830c696158e21723fecf9d4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a27cc209fc830c696158e21723fecf9d4">applyRegionMergingAlgorithm</a> ()</td></tr>
<tr class="memdesc:a27cc209fc830c696158e21723fecf9d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function implements the merging algorithm described in the article "Color-based segmentation of point clouds" by Qingming Zhan, Yubin Liang, Yinghui Xiao <br /></td></tr>
<tr class="separator:a27cc209fc830c696158e21723fecf9d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5246c94d7656b82c4b91575f3ec9ddf8"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a5246c94d7656b82c4b91575f3ec9ddf8">calculateColorimetricalDifference</a> (std::vector&lt; unsigned int &gt; &amp;first_color, std::vector&lt; unsigned int &gt; &amp;second_color) const</td></tr>
<tr class="memdesc:a5246c94d7656b82c4b91575f3ec9ddf8"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method calculates the colorimetrical difference between two points. In this case it simply returns the euclidean distance between two colors.  <a href="classpcl_1_1_region_growing_r_g_b.html#a5246c94d7656b82c4b91575f3ec9ddf8">更多...</a><br /></td></tr>
<tr class="separator:a5246c94d7656b82c4b91575f3ec9ddf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a440c1ca16804fb47ae2971eae1400b69"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a440c1ca16804fb47ae2971eae1400b69">findRegionNeighbours</a> (std::vector&lt; std::vector&lt; std::pair&lt; float, int &gt; &gt; &gt; &amp;neighbours_out, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;regions_in)</td></tr>
<tr class="memdesc:a440c1ca16804fb47ae2971eae1400b69"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method assembles the array containing neighbours of each homogeneous region. Homogeneous region is the union of some segments. This array is used when the regions with a few points need to be merged with the neighbouring region.  <a href="classpcl_1_1_region_growing_r_g_b.html#a440c1ca16804fb47ae2971eae1400b69">更多...</a><br /></td></tr>
<tr class="separator:a440c1ca16804fb47ae2971eae1400b69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af47eafd7764a18e107ee52f36d62233e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#af47eafd7764a18e107ee52f36d62233e">assembleRegions</a> (std::vector&lt; unsigned int &gt; &amp;num_pts_in_region, int num_regions)</td></tr>
<tr class="memdesc:af47eafd7764a18e107ee52f36d62233e"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function simply assembles the regions from list of point labels.  <a href="classpcl_1_1_region_growing_r_g_b.html#af47eafd7764a18e107ee52f36d62233e">更多...</a><br /></td></tr>
<tr class="separator:af47eafd7764a18e107ee52f36d62233e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a749ce5bf131aa92578762d916fd314df"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a749ce5bf131aa92578762d916fd314df">validatePoint</a> (int initial_seed, int point, int nghbr, bool &amp;is_a_seed) const</td></tr>
<tr class="memdesc:a749ce5bf131aa92578762d916fd314df"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is checking if the point with index 'nghbr' belongs to the segment. If so, then it returns true. It also checks if this point can serve as the seed.  <a href="classpcl_1_1_region_growing_r_g_b.html#a749ce5bf131aa92578762d916fd314df">更多...</a><br /></td></tr>
<tr class="separator:a749ce5bf131aa92578762d916fd314df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_region_growing"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_region_growing')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;</a></td></tr>
<tr class="memitem:ad9fdb4c1edc24da8b149866dcfc819d5 inherit pro_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="ad9fdb4c1edc24da8b149866dcfc819d5"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#ad9fdb4c1edc24da8b149866dcfc819d5">applySmoothRegionGrowingAlgorithm</a> ()</td></tr>
<tr class="memdesc:ad9fdb4c1edc24da8b149866dcfc819d5 inherit pro_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function implements the algorithm described in the article "Segmentation of point clouds using smoothness constraint" by T. Rabbania, F. A. van den Heuvelb, G. Vosselmanc. <br /></td></tr>
<tr class="separator:ad9fdb4c1edc24da8b149866dcfc819d5 inherit pro_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ac4219f1374555e9dd76a7338905a6d inherit pro_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a3ac4219f1374555e9dd76a7338905a6d">growRegion</a> (int initial_seed, int segment_number)</td></tr>
<tr class="memdesc:a3ac4219f1374555e9dd76a7338905a6d inherit pro_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method grows a segment for the given seed point. And returns the number of its points.  <a href="classpcl_1_1_region_growing.html#a3ac4219f1374555e9dd76a7338905a6d">更多...</a><br /></td></tr>
<tr class="separator:a3ac4219f1374555e9dd76a7338905a6d inherit pro_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6effde13de0fe92a2e006dcdcde79ef inherit pro_methods_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="af6effde13de0fe92a2e006dcdcde79ef"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#af6effde13de0fe92a2e006dcdcde79ef">assembleRegions</a> ()</td></tr>
<tr class="memdesc:af6effde13de0fe92a2e006dcdcde79ef inherit pro_methods_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function simply assembles the regions from list of point labels. Each cluster is an array of point indices. <br /></td></tr>
<tr class="separator:af6effde13de0fe92a2e006dcdcde79ef inherit pro_methods_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ()</td></tr>
<tr class="memdesc:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called before starting the actual computation.  <a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">更多...</a><br /></td></tr>
<tr class="separator:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="afc426c4eebb94b7734d4fa556bff1420"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ()</td></tr>
<tr class="memdesc:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called after finishing the actual computation. <br /></td></tr>
<tr class="separator:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:a8893f3b6bc24e92ee0d5d59a2391d63b"><td class="memItemLeft" align="right" valign="top"><a id="a8893f3b6bc24e92ee0d5d59a2391d63b"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a8893f3b6bc24e92ee0d5d59a2391d63b">color_p2p_threshold_</a></td></tr>
<tr class="memdesc:a8893f3b6bc24e92ee0d5d59a2391d63b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thershold used in color test for points. <br /></td></tr>
<tr class="separator:a8893f3b6bc24e92ee0d5d59a2391d63b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2cb4ea53fab742aba1adf5d25a167994"><td class="memItemLeft" align="right" valign="top"><a id="a2cb4ea53fab742aba1adf5d25a167994"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a2cb4ea53fab742aba1adf5d25a167994">color_r2r_threshold_</a></td></tr>
<tr class="memdesc:a2cb4ea53fab742aba1adf5d25a167994"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thershold used in color test for regions. <br /></td></tr>
<tr class="separator:a2cb4ea53fab742aba1adf5d25a167994"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42b1661130c5d0a42f924ff87f8be080"><td class="memItemLeft" align="right" valign="top"><a id="a42b1661130c5d0a42f924ff87f8be080"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a42b1661130c5d0a42f924ff87f8be080">distance_threshold_</a></td></tr>
<tr class="memdesc:a42b1661130c5d0a42f924ff87f8be080"><td class="mdescLeft">&#160;</td><td class="mdescRight">Threshold that tells which points we need to assume neighbouring. <br /></td></tr>
<tr class="separator:a42b1661130c5d0a42f924ff87f8be080"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bd294c36d437e8ba497676bcb1b2708"><td class="memItemLeft" align="right" valign="top"><a id="a7bd294c36d437e8ba497676bcb1b2708"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a7bd294c36d437e8ba497676bcb1b2708">region_neighbour_number_</a></td></tr>
<tr class="memdesc:a7bd294c36d437e8ba497676bcb1b2708"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of neighbouring segments to find. <br /></td></tr>
<tr class="separator:a7bd294c36d437e8ba497676bcb1b2708"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bb643cd07f392ac605ab28abd329051"><td class="memItemLeft" align="right" valign="top"><a id="a1bb643cd07f392ac605ab28abd329051"></a>
std::vector&lt; std::vector&lt; float &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a1bb643cd07f392ac605ab28abd329051">point_distances_</a></td></tr>
<tr class="memdesc:a1bb643cd07f392ac605ab28abd329051"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores distances for the point neighbours from point_neighbours_ <br /></td></tr>
<tr class="separator:a1bb643cd07f392ac605ab28abd329051"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab36d4dd5612a3758ae6b3256cb5ec63e"><td class="memItemLeft" align="right" valign="top"><a id="ab36d4dd5612a3758ae6b3256cb5ec63e"></a>
std::vector&lt; std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#ab36d4dd5612a3758ae6b3256cb5ec63e">segment_neighbours_</a></td></tr>
<tr class="memdesc:ab36d4dd5612a3758ae6b3256cb5ec63e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the neighboures for the corresponding segments. <br /></td></tr>
<tr class="separator:ab36d4dd5612a3758ae6b3256cb5ec63e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5068db244252c85621b939f3a493ed33"><td class="memItemLeft" align="right" valign="top"><a id="a5068db244252c85621b939f3a493ed33"></a>
std::vector&lt; std::vector&lt; float &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a5068db244252c85621b939f3a493ed33">segment_distances_</a></td></tr>
<tr class="memdesc:a5068db244252c85621b939f3a493ed33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores distances for the segment neighbours from segment_neighbours_ <br /></td></tr>
<tr class="separator:a5068db244252c85621b939f3a493ed33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac792b931046d98cc4c223c5686520ab7"><td class="memItemLeft" align="right" valign="top"><a id="ac792b931046d98cc4c223c5686520ab7"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html#ac792b931046d98cc4c223c5686520ab7">segment_labels_</a></td></tr>
<tr class="memdesc:ac792b931046d98cc4c223c5686520ab7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores new indices for segments that were obtained at the region growing stage. <br /></td></tr>
<tr class="separator:ac792b931046d98cc4c223c5686520ab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_region_growing"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_region_growing')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;</a></td></tr>
<tr class="memitem:aaf5fe4e97596798764ebd768193b3054 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="aaf5fe4e97596798764ebd768193b3054"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aaf5fe4e97596798764ebd768193b3054">min_pts_per_cluster_</a></td></tr>
<tr class="memdesc:aaf5fe4e97596798764ebd768193b3054 inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the minimum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:aaf5fe4e97596798764ebd768193b3054 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a740af3118950d0bef662a7ab60177b6a inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a740af3118950d0bef662a7ab60177b6a"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a740af3118950d0bef662a7ab60177b6a">max_pts_per_cluster_</a></td></tr>
<tr class="memdesc:a740af3118950d0bef662a7ab60177b6a inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the maximum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:a740af3118950d0bef662a7ab60177b6a inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d9411960ec9656fa6e727e0558d57f7 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a8d9411960ec9656fa6e727e0558d57f7"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a8d9411960ec9656fa6e727e0558d57f7">smooth_mode_flag_</a></td></tr>
<tr class="memdesc:a8d9411960ec9656fa6e727e0558d57f7 inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag that signalizes if the smoothness constraint will be used. <br /></td></tr>
<tr class="separator:a8d9411960ec9656fa6e727e0558d57f7 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a5665f6c84af901ed018521b8b3677d inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a1a5665f6c84af901ed018521b8b3677d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a1a5665f6c84af901ed018521b8b3677d">curvature_flag_</a></td></tr>
<tr class="memdesc:a1a5665f6c84af901ed018521b8b3677d inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">If set to true then curvature test will be done during segmentation. <br /></td></tr>
<tr class="separator:a1a5665f6c84af901ed018521b8b3677d inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa217ad1c027e687ff378edb852ca3052 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="aa217ad1c027e687ff378edb852ca3052"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aa217ad1c027e687ff378edb852ca3052">residual_flag_</a></td></tr>
<tr class="memdesc:aa217ad1c027e687ff378edb852ca3052 inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">If set to true then residual test will be done during segmentation. <br /></td></tr>
<tr class="separator:aa217ad1c027e687ff378edb852ca3052 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87c8818e2c3eb306f1e44fa98bb55a89 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a87c8818e2c3eb306f1e44fa98bb55a89"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a87c8818e2c3eb306f1e44fa98bb55a89">theta_threshold_</a></td></tr>
<tr class="memdesc:a87c8818e2c3eb306f1e44fa98bb55a89 inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thershold used for testing the smoothness between points. <br /></td></tr>
<tr class="separator:a87c8818e2c3eb306f1e44fa98bb55a89 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9039b5534be233e1aa26bbadeecd42a inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="ab9039b5534be233e1aa26bbadeecd42a"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#ab9039b5534be233e1aa26bbadeecd42a">residual_threshold_</a></td></tr>
<tr class="memdesc:ab9039b5534be233e1aa26bbadeecd42a inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thershold used in residual test. <br /></td></tr>
<tr class="separator:ab9039b5534be233e1aa26bbadeecd42a inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8afe22fadb13bbd9a0d90753129b336c inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a8afe22fadb13bbd9a0d90753129b336c"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a8afe22fadb13bbd9a0d90753129b336c">curvature_threshold_</a></td></tr>
<tr class="memdesc:a8afe22fadb13bbd9a0d90753129b336c inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thershold used in curvature test. <br /></td></tr>
<tr class="separator:a8afe22fadb13bbd9a0d90753129b336c inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e71c3e1eab57f9eac8ff2897200fe5a inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a8e71c3e1eab57f9eac8ff2897200fe5a"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a8e71c3e1eab57f9eac8ff2897200fe5a">neighbour_number_</a></td></tr>
<tr class="memdesc:a8e71c3e1eab57f9eac8ff2897200fe5a inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of neighbours to find. <br /></td></tr>
<tr class="separator:a8e71c3e1eab57f9eac8ff2897200fe5a inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a257e86a32165cc92f55c9a0b610b7917 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a257e86a32165cc92f55c9a0b610b7917"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a257e86a32165cc92f55c9a0b610b7917">search_</a></td></tr>
<tr class="memdesc:a257e86a32165cc92f55c9a0b610b7917 inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serch method that will be used for KNN. <br /></td></tr>
<tr class="separator:a257e86a32165cc92f55c9a0b610b7917 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a071c48f5d44f919aba6f8f386fd5e988 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a071c48f5d44f919aba6f8f386fd5e988"></a>
NormalPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a></td></tr>
<tr class="memdesc:a071c48f5d44f919aba6f8f386fd5e988 inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains normals of the points that will be segmented. <br /></td></tr>
<tr class="separator:a071c48f5d44f919aba6f8f386fd5e988 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e4cd088c8a767b380613c9471cc15d5 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a3e4cd088c8a767b380613c9471cc15d5"></a>
std::vector&lt; std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">point_neighbours_</a></td></tr>
<tr class="memdesc:a3e4cd088c8a767b380613c9471cc15d5 inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains neighbours of each point. <br /></td></tr>
<tr class="separator:a3e4cd088c8a767b380613c9471cc15d5 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83457053cb030294787154b4d29a9e87 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a83457053cb030294787154b4d29a9e87"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">point_labels_</a></td></tr>
<tr class="memdesc:a83457053cb030294787154b4d29a9e87 inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Point labels that tells to which segment each point belongs. <br /></td></tr>
<tr class="separator:a83457053cb030294787154b4d29a9e87 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95f1b3605f488bcaa677d166f2b0f362 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a95f1b3605f488bcaa677d166f2b0f362"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a95f1b3605f488bcaa677d166f2b0f362">normal_flag_</a></td></tr>
<tr class="memdesc:a95f1b3605f488bcaa677d166f2b0f362 inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">If set to true then normal/smoothness test will be done during segmentation. It is always set to true for the usual region growing algorithm. It is used for turning on/off the test for smoothness in the child class RegionGrowingRGB. <br /></td></tr>
<tr class="separator:a95f1b3605f488bcaa677d166f2b0f362 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d9823fcc36dd839f1b0e35f5949b468 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a2d9823fcc36dd839f1b0e35f5949b468"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a2d9823fcc36dd839f1b0e35f5949b468">num_pts_in_segment_</a></td></tr>
<tr class="memdesc:a2d9823fcc36dd839f1b0e35f5949b468 inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tells how much points each segment contains. Used for reserving memory. <br /></td></tr>
<tr class="separator:a2d9823fcc36dd839f1b0e35f5949b468 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af330bc7d3ac671aee8e1a48608608b72 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="af330bc7d3ac671aee8e1a48608608b72"></a>
std::vector&lt; <a class="el" href="structpcl_1_1_point_indices.html">pcl::PointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a></td></tr>
<tr class="memdesc:af330bc7d3ac671aee8e1a48608608b72 inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">After the segmentation it will contain the segments. <br /></td></tr>
<tr class="separator:af330bc7d3ac671aee8e1a48608608b72 inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addb7479a6c8b6a8fd5ca68aadfd9b7cf inherit pro_attribs_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="addb7479a6c8b6a8fd5ca68aadfd9b7cf"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#addb7479a6c8b6a8fd5ca68aadfd9b7cf">number_of_segments_</a></td></tr>
<tr class="memdesc:addb7479a6c8b6a8fd5ca68aadfd9b7cf inherit pro_attribs_classpcl_1_1_region_growing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the number of segments. <br /></td></tr>
<tr class="separator:addb7479a6c8b6a8fd5ca68aadfd9b7cf inherit pro_attribs_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a09c70d8e06e3fb4f07903fe6f8d67869"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a></td></tr>
<tr class="memdesc:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input point cloud dataset. <br /></td></tr>
<tr class="separator:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="aaee847c8a517ebf365bad2cb182a6626"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a></td></tr>
<tr class="memdesc:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the vector of point indices to use. <br /></td></tr>
<tr class="separator:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ada1eadb824d34ca9206a86343d9760bb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ada1eadb824d34ca9206a86343d9760bb">use_indices_</a></td></tr>
<tr class="memdesc:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if point indices are used. <br /></td></tr>
<tr class="separator:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="adadb0299f144528020ed558af6879662"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">fake_indices_</a></td></tr>
<tr class="memdesc:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">If no set of indices are given, we construct a set of fake indices that mimic the input <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a>. <br /></td></tr>
<tr class="separator:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_region_growing"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_region_growing')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;</a></td></tr>
<tr class="memitem:a9ff687d22b2c7db8325c3483488dcaff inherit pub_types_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a9ff687d22b2c7db8325c3483488dcaff"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTree</b></td></tr>
<tr class="separator:a9ff687d22b2c7db8325c3483488dcaff inherit pub_types_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c9f2170d20e26e864ceb30ce07ee6eb inherit pub_types_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a0c9f2170d20e26e864ceb30ce07ee6eb"></a>
typedef KdTree::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreePtr</b></td></tr>
<tr class="separator:a0c9f2170d20e26e864ceb30ce07ee6eb inherit pub_types_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0abcac01820e2cbac433e04c57d3fe09 inherit pub_types_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a0abcac01820e2cbac433e04c57d3fe09"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_normal.html">pcl::Normal</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Normal</b></td></tr>
<tr class="separator:a0abcac01820e2cbac433e04c57d3fe09 inherit pub_types_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3625ed32c993e612ec4304a7761a5352 inherit pub_types_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a3625ed32c993e612ec4304a7761a5352"></a>
typedef Normal::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>NormalPtr</b></td></tr>
<tr class="separator:a3625ed32c993e612ec4304a7761a5352 inherit pub_types_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a094821dd021aed2a0ed290c3ebf2a60d inherit pub_types_classpcl_1_1_region_growing"><td class="memItemLeft" align="right" valign="top"><a id="a094821dd021aed2a0ed290c3ebf2a60d"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:a094821dd021aed2a0ed290c3ebf2a60d inherit pub_types_classpcl_1_1_region_growing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae2f6f6863a73337858b7a7a054eaae4f"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ab84dd662cda89edb882fe5307b2136ea"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ac8326513fad0680b6993e2f1a79a6af4"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae51eae0c7b3e0b7178f4894dff90660a"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a51771056fb4ab8c448a11157acbe2ee0"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> const  &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointT, typename NormalT = pcl::Normal&gt;<br />
class pcl::RegionGrowingRGB&lt; PointT, NormalT &gt;</h3>

<p>Implements the well known Region Growing algorithm used for segmentation based on color of points. Description can be found in the article "Color-based segmentation of point clouds" by Qingming Zhan, Yubin Liang, Yinghui Xiao </p>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="af47eafd7764a18e107ee52f36d62233e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af47eafd7764a18e107ee52f36d62233e">&#9670;&nbsp;</a></span>assembleRegions()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::assembleRegions </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; unsigned int &gt; &amp;&#160;</td>
          <td class="paramname"><em>num_pts_in_region</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num_regions</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This function simply assembles the regions from list of point labels. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">num_pts_in_region</td><td>for each final region it stores the corresponding number of points in it </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">num_regions</td><td>number of regions to assemble </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;{</div>
<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.clear ();</div>
<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;  <a class="code" href="structpcl_1_1_point_indices.html">pcl::PointIndices</a> segment;</div>
<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.resize (num_regions, segment);</div>
<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i_seg = 0; i_seg &lt; num_regions; i_seg++)</div>
<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;  {</div>
<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;    <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>[i_seg].indices.resize (num_pts_in_region[i_seg]);</div>
<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;  }</div>
<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160; </div>
<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;  std::vector&lt;int&gt; counter;</div>
<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;  counter.resize (num_regions, 0);</div>
<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;  <span class="keywordtype">int</span> point_number = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ());</div>
<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i_point = 0; i_point &lt; point_number; i_point++)</div>
<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;  {</div>
<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;    <span class="keywordtype">int</span> point_index = (*indices_)[i_point];</div>
<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;    <span class="keywordtype">int</span> index = <a class="code" href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">point_labels_</a>[point_index];</div>
<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;    index = <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#ac792b931046d98cc4c223c5686520ab7">segment_labels_</a>[index];</div>
<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;    <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>[index].indices[ counter[index] ] = point_index;</div>
<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;    counter[index] += 1;</div>
<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;  }</div>
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160; </div>
<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;  <span class="comment">// now we need to erase empty regions</span></div>
<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.empty ()) </div>
<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160; </div>
<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;  std::vector&lt;pcl::PointIndices&gt;::iterator itr1, itr2;</div>
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;  itr1 = <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.begin ();</div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;  itr2 = <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.end () - 1;</div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160; </div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;  <span class="keywordflow">while</span> (itr1 &lt; itr2)</div>
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;  {</div>
<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;    <span class="keywordflow">while</span> (!(itr1-&gt;indices.empty ()) &amp;&amp; itr1 &lt; itr2) </div>
<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;      itr1++;</div>
<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;    <span class="keywordflow">while</span> (  itr2-&gt;indices.empty ()  &amp;&amp; itr1 &lt; itr2) </div>
<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;      itr2--;</div>
<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;      </div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;    <span class="keywordflow">if</span> (itr1 != itr2)</div>
<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;      itr1-&gt;indices.swap (itr2-&gt;indices);</div>
<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;  }</div>
<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160; </div>
<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;  <span class="keywordflow">if</span> (itr2-&gt;indices.empty ())</div>
<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;    <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.erase (itr2, <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.end ());</div>
<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_aaee847c8a517ebf365bad2cb182a6626"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">pcl::PCLBase::indices_</a></div><div class="ttdeci">IndicesPtr indices_</div><div class="ttdoc">A pointer to the vector of point indices to use.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:153</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a83457053cb030294787154b4d29a9e87"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::point_labels_</a></div><div class="ttdeci">std::vector&lt; int &gt; point_labels_</div><div class="ttdoc">Point labels that tells to which segment each point belongs.</div><div class="ttdef"><b>Definition:</b> region_growing.h:319</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_af330bc7d3ac671aee8e1a48608608b72"><div class="ttname"><a href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::clusters_</a></div><div class="ttdeci">std::vector&lt; pcl::PointIndices &gt; clusters_</div><div class="ttdoc">After the segmentation it will contain the segments.</div><div class="ttdef"><b>Definition:</b> region_growing.h:330</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_ac792b931046d98cc4c223c5686520ab7"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#ac792b931046d98cc4c223c5686520ab7">pcl::RegionGrowingRGB::segment_labels_</a></div><div class="ttdeci">std::vector&lt; int &gt; segment_labels_</div><div class="ttdoc">Stores new indices for segments that were obtained at the region growing stage.</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.h:274</div></div>
<div class="ttc" id="astructpcl_1_1_point_indices_html"><div class="ttname"><a href="structpcl_1_1_point_indices.html">pcl::PointIndices</a></div><div class="ttdef"><b>Definition:</b> PointIndices.h:13</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5246c94d7656b82c4b91575f3ec9ddf8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5246c94d7656b82c4b91575f3ec9ddf8">&#9670;&nbsp;</a></span>calculateColorimetricalDifference()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::calculateColorimetricalDifference </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; unsigned int &gt; &amp;&#160;</td>
          <td class="paramname"><em>first_color</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; unsigned int &gt; &amp;&#160;</td>
          <td class="paramname"><em>second_color</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method calculates the colorimetrical difference between two points. In this case it simply returns the euclidean distance between two colors. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">first_color</td><td>the color of the first point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">second_color</td><td>the color of the second point </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;{</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;  <span class="keywordtype">float</span> difference = 0.0f;</div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;  difference += float ((first_color[0] - second_color[0]) * (first_color[0] - second_color[0]));</div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;  difference += float ((first_color[1] - second_color[1]) * (first_color[1] - second_color[1]));</div>
<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;  difference += float ((first_color[2] - second_color[2]) * (first_color[2] - second_color[2]));</div>
<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;  <span class="keywordflow">return</span> (difference);</div>
<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a9171a8be4eec4a3d841a2fe0b28234a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9171a8be4eec4a3d841a2fe0b28234a9">&#9670;&nbsp;</a></span>extract()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::extract </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="structpcl_1_1_point_indices.html">pcl::PointIndices</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>clusters</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method launches the segmentation algorithm and returns the clusters that were obtained during the segmentation. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">clusters</td><td>clusters that were obtained. Each cluster is an array of point indices. </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_region_growing.html#a9ef8286d7ced3ff97667653b96a4bd21">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;{</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.clear ();</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  clusters.clear ();</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">point_neighbours_</a>.clear ();</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">point_labels_</a>.clear ();</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a2d9823fcc36dd839f1b0e35f5949b468">num_pts_in_segment_</a>.clear ();</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a1bb643cd07f392ac605ab28abd329051">point_distances_</a>.clear ();</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#ab36d4dd5612a3758ae6b3256cb5ec63e">segment_neighbours_</a>.clear ();</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a5068db244252c85621b939f3a493ed33">segment_distances_</a>.clear ();</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#ac792b931046d98cc4c223c5686520ab7">segment_labels_</a>.clear ();</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#addb7479a6c8b6a8fd5ca68aadfd9b7cf">number_of_segments_</a> = 0;</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160; </div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;  <span class="keywordtype">bool</span> segmentation_is_possible = <a class="code" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ();</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <span class="keywordflow">if</span> ( !segmentation_is_possible )</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  {</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  }</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160; </div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  segmentation_is_possible = <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a4d47aae4b7956210fa74f85a4ba540fc">prepareForSegmentation</a> ();</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="keywordflow">if</span> ( !segmentation_is_possible )</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  {</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  }</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160; </div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#aefc4dcc3fbe7ab81dd8a2bad27bb0c36">findPointNeighbours</a> ();</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#ad9fdb4c1edc24da8b149866dcfc819d5">applySmoothRegionGrowingAlgorithm</a> ();</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#af6effde13de0fe92a2e006dcdcde79ef">RegionGrowing&lt;PointT, NormalT&gt;::assembleRegions</a> ();</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160; </div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#adea4bb708dcff1412a93b8ee46c9f05f">findSegmentNeighbours</a> ();</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a27cc209fc830c696158e21723fecf9d4">applyRegionMergingAlgorithm</a> ();</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160; </div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  std::vector&lt;pcl::PointIndices&gt;::iterator cluster_iter = <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.begin ();</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <span class="keywordflow">while</span> (cluster_iter != <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.end ())</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  {</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <span class="keywordflow">if</span> (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (cluster_iter-&gt;indices.size ()) &lt; <a class="code" href="classpcl_1_1_region_growing.html#aaf5fe4e97596798764ebd768193b3054">min_pts_per_cluster_</a> ||</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (cluster_iter-&gt;indices.size ()) &gt; <a class="code" href="classpcl_1_1_region_growing.html#a740af3118950d0bef662a7ab60177b6a">max_pts_per_cluster_</a>)</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    {</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;      cluster_iter = <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.erase (cluster_iter);</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    }</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;      cluster_iter++;</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  }</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160; </div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  clusters.reserve (<a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.size ());</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;  std::copy (<a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.begin (), <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.end (), std::back_inserter (clusters));</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160; </div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_acceb20854934f4cf77e266eb5a44d4f0"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">pcl::PCLBase::initCompute</a></div><div class="ttdeci">bool initCompute()</div><div class="ttdoc">This method should get called before starting the actual computation.</div><div class="ttdef"><b>Definition:</b> pcl_base.hpp:139</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_afc426c4eebb94b7734d4fa556bff1420"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">pcl::PCLBase::deinitCompute</a></div><div class="ttdeci">bool deinitCompute()</div><div class="ttdoc">This method should get called after finishing the actual computation.</div><div class="ttdef"><b>Definition:</b> pcl_base.hpp:174</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a2d9823fcc36dd839f1b0e35f5949b468"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a2d9823fcc36dd839f1b0e35f5949b468">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::num_pts_in_segment_</a></div><div class="ttdeci">std::vector&lt; int &gt; num_pts_in_segment_</div><div class="ttdoc">Tells how much points each segment contains. Used for reserving memory.</div><div class="ttdef"><b>Definition:</b> region_growing.h:327</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a3e4cd088c8a767b380613c9471cc15d5"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::point_neighbours_</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; int &gt; &gt; point_neighbours_</div><div class="ttdoc">Contains neighbours of each point.</div><div class="ttdef"><b>Definition:</b> region_growing.h:316</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a740af3118950d0bef662a7ab60177b6a"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a740af3118950d0bef662a7ab60177b6a">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::max_pts_per_cluster_</a></div><div class="ttdeci">int max_pts_per_cluster_</div><div class="ttdoc">Stores the maximum number of points that a cluster needs to contain in order to be considered valid.</div><div class="ttdef"><b>Definition:</b> region_growing.h:286</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_aaf5fe4e97596798764ebd768193b3054"><div class="ttname"><a href="classpcl_1_1_region_growing.html#aaf5fe4e97596798764ebd768193b3054">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::min_pts_per_cluster_</a></div><div class="ttdeci">int min_pts_per_cluster_</div><div class="ttdoc">Stores the minimum number of points that a cluster needs to contain in order to be considered valid.</div><div class="ttdef"><b>Definition:</b> region_growing.h:283</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_ad9fdb4c1edc24da8b149866dcfc819d5"><div class="ttname"><a href="classpcl_1_1_region_growing.html#ad9fdb4c1edc24da8b149866dcfc819d5">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::applySmoothRegionGrowingAlgorithm</a></div><div class="ttdeci">void applySmoothRegionGrowingAlgorithm()</div><div class="ttdoc">This function implements the algorithm described in the article &quot;Segmentation of point clouds using s...</div><div class="ttdef"><b>Definition:</b> region_growing.hpp:387</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_addb7479a6c8b6a8fd5ca68aadfd9b7cf"><div class="ttname"><a href="classpcl_1_1_region_growing.html#addb7479a6c8b6a8fd5ca68aadfd9b7cf">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::number_of_segments_</a></div><div class="ttdeci">int number_of_segments_</div><div class="ttdoc">Stores the number of segments.</div><div class="ttdef"><b>Definition:</b> region_growing.h:333</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_af6effde13de0fe92a2e006dcdcde79ef"><div class="ttname"><a href="classpcl_1_1_region_growing.html#af6effde13de0fe92a2e006dcdcde79ef">pcl::RegionGrowing::assembleRegions</a></div><div class="ttdeci">void assembleRegions()</div><div class="ttdoc">This function simply assembles the regions from list of point labels. Each cluster is an array of poi...</div><div class="ttdef"><b>Definition:</b> region_growing.hpp:550</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_a1bb643cd07f392ac605ab28abd329051"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#a1bb643cd07f392ac605ab28abd329051">pcl::RegionGrowingRGB::point_distances_</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; float &gt; &gt; point_distances_</div><div class="ttdoc">Stores distances for the point neighbours from point_neighbours_</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.h:265</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_a27cc209fc830c696158e21723fecf9d4"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#a27cc209fc830c696158e21723fecf9d4">pcl::RegionGrowingRGB::applyRegionMergingAlgorithm</a></div><div class="ttdeci">void applyRegionMergingAlgorithm()</div><div class="ttdoc">This function implements the merging algorithm described in the article &quot;Color-based segmentation of ...</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.hpp:368</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_a4d47aae4b7956210fa74f85a4ba540fc"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#a4d47aae4b7956210fa74f85a4ba540fc">pcl::RegionGrowingRGB::prepareForSegmentation</a></div><div class="ttdeci">virtual bool prepareForSegmentation()</div><div class="ttdoc">This method simply checks if it is possible to execute the segmentation algorithm with the current se...</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.hpp:217</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_a5068db244252c85621b939f3a493ed33"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#a5068db244252c85621b939f3a493ed33">pcl::RegionGrowingRGB::segment_distances_</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; float &gt; &gt; segment_distances_</div><div class="ttdoc">Stores distances for the segment neighbours from segment_neighbours_</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.h:271</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_ab36d4dd5612a3758ae6b3256cb5ec63e"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#ab36d4dd5612a3758ae6b3256cb5ec63e">pcl::RegionGrowingRGB::segment_neighbours_</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; int &gt; &gt; segment_neighbours_</div><div class="ttdoc">Stores the neighboures for the corresponding segments.</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.h:268</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_adea4bb708dcff1412a93b8ee46c9f05f"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#adea4bb708dcff1412a93b8ee46c9f05f">pcl::RegionGrowingRGB::findSegmentNeighbours</a></div><div class="ttdeci">void findSegmentNeighbours()</div><div class="ttdoc">This method simply calls the findRegionsKNN for each segment and saves the results for later use.</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.hpp:294</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_aefc4dcc3fbe7ab81dd8a2bad27bb0c36"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#aefc4dcc3fbe7ab81dd8a2bad27bb0c36">pcl::RegionGrowingRGB::findPointNeighbours</a></div><div class="ttdeci">virtual void findPointNeighbours()</div><div class="ttdoc">This method finds KNN for each point and saves them to the array because the algorithm needs to find ...</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.hpp:272</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a440c1ca16804fb47ae2971eae1400b69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a440c1ca16804fb47ae2971eae1400b69">&#9670;&nbsp;</a></span>findRegionNeighbours()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::findRegionNeighbours </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; std::vector&lt; std::pair&lt; float, int &gt; &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>neighbours_out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; std::vector&lt; int &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>regions_in</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method assembles the array containing neighbours of each homogeneous region. Homogeneous region is the union of some segments. This array is used when the regions with a few points need to be merged with the neighbouring region. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">neighbours_out</td><td>vector of lists of neighbours for every homogeneous region </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">regions_in</td><td>vector of lists, each list contains indices of segments that belong to the corresponding homogeneous region. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;{</div>
<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;  <span class="keywordtype">int</span> region_number = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (regions_in.size ());</div>
<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;  neighbours_out.clear ();</div>
<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;  neighbours_out.resize (region_number);</div>
<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160; </div>
<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i_reg = 0; i_reg &lt; region_number; i_reg++)</div>
<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;  {</div>
<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;    <span class="keywordtype">int</span> segment_num = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (regions_in[i_reg].size ());</div>
<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;    neighbours_out[i_reg].reserve (segment_num * <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a7bd294c36d437e8ba497676bcb1b2708">region_neighbour_number_</a>);</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i_seg = 0; i_seg &lt; segment_num; i_seg++)</div>
<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;    {</div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;      <span class="keywordtype">int</span> curr_segment = regions_in[i_reg][i_seg];</div>
<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;      <span class="keywordtype">int</span> nghbr_number = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_region_growing_r_g_b.html#ab36d4dd5612a3758ae6b3256cb5ec63e">segment_neighbours_</a>[curr_segment].size ());</div>
<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;      std::pair&lt;float, int&gt; pair;</div>
<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i_nghbr = 0; i_nghbr &lt; nghbr_number; i_nghbr++)</div>
<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;      {</div>
<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;        <span class="keywordtype">int</span> segment_index = <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#ab36d4dd5612a3758ae6b3256cb5ec63e">segment_neighbours_</a>[curr_segment][i_nghbr];</div>
<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;        <span class="keywordflow">if</span> ( <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a5068db244252c85621b939f3a493ed33">segment_distances_</a>[curr_segment][i_nghbr] == std::numeric_limits&lt;float&gt;::max () )</div>
<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;          <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing_r_g_b.html#ac792b931046d98cc4c223c5686520ab7">segment_labels_</a>[segment_index] != i_reg)</div>
<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;        {</div>
<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;          pair.first = <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a5068db244252c85621b939f3a493ed33">segment_distances_</a>[curr_segment][i_nghbr];</div>
<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;          pair.second = segment_index;</div>
<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;          neighbours_out[i_reg].push_back (pair);</div>
<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;        }</div>
<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;      }<span class="comment">// next neighbour</span></div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;    }<span class="comment">// next segment</span></div>
<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;    std::sort (neighbours_out[i_reg].begin (), neighbours_out[i_reg].end (), comparePair);</div>
<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;  }<span class="comment">// next homogeneous region</span></div>
<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_a7bd294c36d437e8ba497676bcb1b2708"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#a7bd294c36d437e8ba497676bcb1b2708">pcl::RegionGrowingRGB::region_neighbour_number_</a></div><div class="ttdeci">unsigned int region_neighbour_number_</div><div class="ttdoc">Number of neighbouring segments to find.</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.h:262</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a35a1ca832b5cf24da14f0bdb853d68ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35a1ca832b5cf24da14f0bdb853d68ba">&#9670;&nbsp;</a></span>findRegionsKNN()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::findRegionsKNN </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nghbr_number</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>nghbrs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>dist</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method finds K nearest neighbours of the given segment. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>index of the segment for which neighbours will be found </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nghbr_number</td><td>the number of neighbours to find </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">nghbrs</td><td>the array of indices of the neighbours that were found </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dist</td><td>the array of distances to the corresponding neighbours </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;{</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  std::vector&lt;float&gt; distances;</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="keywordtype">float</span> max_dist = std::numeric_limits&lt;float&gt;::max ();</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;  distances.resize (<a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.size (), max_dist);</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160; </div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;  <span class="keywordtype">int</span> number_of_points = <a class="code" href="classpcl_1_1_region_growing.html#a2d9823fcc36dd839f1b0e35f5949b468">num_pts_in_segment_</a>[index];</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  <span class="comment">//loop throug every point in this segment and check neighbours</span></div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i_point = 0; i_point &lt; number_of_points; i_point++)</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;  {</div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    <span class="keywordtype">int</span> point_index = <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>[index].indices[i_point];</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <span class="keywordtype">int</span> number_of_neighbours = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">point_neighbours_</a>[point_index].size ());</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    <span class="comment">//loop throug every neighbour of the current point, find out to which segment it belongs</span></div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    <span class="comment">//and if it belongs to neighbouring segment and is close enough then remember segment and its distance</span></div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i_nghbr = 0; i_nghbr &lt; number_of_neighbours; i_nghbr++)</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    {</div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;      <span class="comment">// find segment</span></div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;      <span class="keywordtype">int</span> segment_index = -1;</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;      segment_index = <a class="code" href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">point_labels_</a>[ <a class="code" href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">point_neighbours_</a>[point_index][i_nghbr] ];</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160; </div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;      <span class="keywordflow">if</span> ( segment_index != index )</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;      {</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;        <span class="comment">// try to push it to the queue</span></div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        <span class="keywordflow">if</span> (distances[segment_index] &gt; <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a1bb643cd07f392ac605ab28abd329051">point_distances_</a>[point_index][i_nghbr])</div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;          distances[segment_index] = <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a1bb643cd07f392ac605ab28abd329051">point_distances_</a>[point_index][i_nghbr];</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;      }</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    }</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  }<span class="comment">// next point</span></div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160; </div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  std::priority_queue&lt;std::pair&lt;float, int&gt; &gt; segment_neighbours;</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i_seg = 0; i_seg &lt; <a class="code" href="classpcl_1_1_region_growing.html#addb7479a6c8b6a8fd5ca68aadfd9b7cf">number_of_segments_</a>; i_seg++)</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;  {</div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    <span class="keywordflow">if</span> (distances[i_seg] &lt; max_dist)</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    {</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;      segment_neighbours.push (std::make_pair (distances[i_seg], i_seg) );</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;      <span class="keywordflow">if</span> (<span class="keywordtype">int</span> (segment_neighbours.size ()) &gt; nghbr_number)</div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;        segment_neighbours.pop ();</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    }</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;  }</div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160; </div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;  <span class="keywordtype">int</span> size = std::min&lt;int&gt; (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (segment_neighbours.size ()), nghbr_number);</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;  nghbrs.resize (size, 0);</div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;  dist.resize (size, 0);</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;  <span class="keywordtype">int</span> counter = 0;</div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;  <span class="keywordflow">while</span> ( !segment_neighbours.empty () &amp;&amp; counter &lt; nghbr_number )</div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;  {</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    dist[counter] = segment_neighbours.top ().first;</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    nghbrs[counter] = segment_neighbours.top ().second;</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    segment_neighbours.pop ();</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;    counter++;</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;  }</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ada29f9c9d4c8719ff00ce4d1ef8be55a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada29f9c9d4c8719ff00ce4d1ef8be55a">&#9670;&nbsp;</a></span>getSegmentFromPoint()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::getSegmentFromPoint </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structpcl_1_1_point_indices.html">pcl::PointIndices</a> &amp;&#160;</td>
          <td class="paramname"><em>cluster</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>For a given point this function builds a segment to which it belongs and returns this segment. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>index of the initial point which will be the seed for growing a segment. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">cluster</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_region_growing.html#a72b71b0e82a8080dcd26142968eb21e3">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;{</div>
<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;  cluster.indices.clear ();</div>
<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160; </div>
<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;  <span class="keywordtype">bool</span> segmentation_is_possible = <a class="code" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ();</div>
<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;  <span class="keywordflow">if</span> ( !segmentation_is_possible )</div>
<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;  {</div>
<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;    <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;  }</div>
<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160; </div>
<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;  <span class="comment">// first of all we need to find out if this point belongs to cloud</span></div>
<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;  <span class="keywordtype">bool</span> point_was_found = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;  <span class="keywordtype">int</span> number_of_points = <span class="keyword">static_cast &lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ());</div>
<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> point = 0; point &lt; number_of_points; point++)</div>
<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;    <span class="keywordflow">if</span> ( (*<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>)[point] == index)</div>
<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;    {</div>
<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;      point_was_found = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;    }</div>
<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160; </div>
<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;  <span class="keywordflow">if</span> (point_was_found)</div>
<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;  {</div>
<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.empty ())</div>
<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;    {</div>
<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.clear ();</div>
<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">point_neighbours_</a>.clear ();</div>
<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">point_labels_</a>.clear ();</div>
<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#a2d9823fcc36dd839f1b0e35f5949b468">num_pts_in_segment_</a>.clear ();</div>
<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;      <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a1bb643cd07f392ac605ab28abd329051">point_distances_</a>.clear ();</div>
<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;      <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#ab36d4dd5612a3758ae6b3256cb5ec63e">segment_neighbours_</a>.clear ();</div>
<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;      <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a5068db244252c85621b939f3a493ed33">segment_distances_</a>.clear ();</div>
<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;      <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#ac792b931046d98cc4c223c5686520ab7">segment_labels_</a>.clear ();</div>
<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#addb7479a6c8b6a8fd5ca68aadfd9b7cf">number_of_segments_</a> = 0;</div>
<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160; </div>
<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;      segmentation_is_possible = <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a4d47aae4b7956210fa74f85a4ba540fc">prepareForSegmentation</a> ();</div>
<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;      <span class="keywordflow">if</span> ( !segmentation_is_possible )</div>
<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;      {</div>
<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;        <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;        <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;      }</div>
<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160; </div>
<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;      <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#aefc4dcc3fbe7ab81dd8a2bad27bb0c36">findPointNeighbours</a> ();</div>
<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#ad9fdb4c1edc24da8b149866dcfc819d5">applySmoothRegionGrowingAlgorithm</a> ();</div>
<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#af6effde13de0fe92a2e006dcdcde79ef">RegionGrowing&lt;PointT, NormalT&gt;::assembleRegions</a> ();</div>
<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160; </div>
<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;      <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#adea4bb708dcff1412a93b8ee46c9f05f">findSegmentNeighbours</a> ();</div>
<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;      <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a27cc209fc830c696158e21723fecf9d4">applyRegionMergingAlgorithm</a> ();</div>
<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;    }</div>
<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;    <span class="comment">// if we have already made the segmentation, then find the segment</span></div>
<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;    <span class="comment">// to which this point belongs</span></div>
<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;    std::vector &lt;pcl::PointIndices&gt;::iterator i_segment;</div>
<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;    <span class="keywordflow">for</span> (i_segment = <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.begin (); i_segment != <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.end (); i_segment++)</div>
<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;    {</div>
<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;      <span class="keywordtype">bool</span> segment_was_found = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i_point = 0; i_point &lt; i_segment-&gt;indices.size (); i_point++)</div>
<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;      {</div>
<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;        <span class="keywordflow">if</span> (i_segment-&gt;indices[i_point] == index)</div>
<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;        {</div>
<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;          segment_was_found = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;          cluster.indices.clear ();</div>
<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;          cluster.indices.reserve (i_segment-&gt;indices.size ());</div>
<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;          std::copy (i_segment-&gt;indices.begin (), i_segment-&gt;indices.end (), std::back_inserter (cluster.indices));</div>
<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;          <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;        }</div>
<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;      }</div>
<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;      <span class="keywordflow">if</span> (segment_was_found)</div>
<div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;      {</div>
<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;      }</div>
<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;    }<span class="comment">// next segment</span></div>
<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;  }<span class="comment">// end if point was found</span></div>
<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160; </div>
<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;  <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="af2bd79d30676cddeb1bdb1fbf5facf50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af2bd79d30676cddeb1bdb1fbf5facf50">&#9670;&nbsp;</a></span>setCurvatureTestFlag()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setCurvatureTestFlag </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Allows to turn on/off the curvature test. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>new value for curvature test. If set to true then the test will be turned on </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_region_growing.html#a1f7a093b9cdc5337309cdeabffc1cd92">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;{</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a1a5665f6c84af901ed018521b8b3677d">curvature_flag_</a> = value;</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a1a5665f6c84af901ed018521b8b3677d"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a1a5665f6c84af901ed018521b8b3677d">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::curvature_flag_</a></div><div class="ttdeci">bool curvature_flag_</div><div class="ttdoc">If set to true then curvature test will be done during segmentation.</div><div class="ttdef"><b>Definition:</b> region_growing.h:292</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1500b628d0e3321a57c2deee0d007e47"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1500b628d0e3321a57c2deee0d007e47">&#9670;&nbsp;</a></span>setDistanceThreshold()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setDistanceThreshold </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>thresh</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Allows to set distance threshold. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">thresh</td><td>new threshold value for neighbour test </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;{</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a42b1661130c5d0a42f924ff87f8be080">distance_threshold_</a> = thresh * thresh;</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_a42b1661130c5d0a42f924ff87f8be080"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#a42b1661130c5d0a42f924ff87f8be080">pcl::RegionGrowingRGB::distance_threshold_</a></div><div class="ttdeci">float distance_threshold_</div><div class="ttdoc">Threshold that tells which points we need to assume neighbouring.</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.h:259</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a45b2f1a7947503a313da4b0e3228284a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a45b2f1a7947503a313da4b0e3228284a">&#9670;&nbsp;</a></span>setNormalTestFlag()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setNormalTestFlag </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Allows to turn on/off the smoothness test. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>new value for normal/smoothness test. If set to true then the test will be turned on </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;{</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a95f1b3605f488bcaa677d166f2b0f362">normal_flag_</a> = value;</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a95f1b3605f488bcaa677d166f2b0f362"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a95f1b3605f488bcaa677d166f2b0f362">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::normal_flag_</a></div><div class="ttdeci">bool normal_flag_</div><div class="ttdoc">If set to true then normal/smoothness test will be done during segmentation. It is always set to true...</div><div class="ttdef"><b>Definition:</b> region_growing.h:324</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4ada7a371b5ac47ac5fb9543716a82d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ada7a371b5ac47ac5fb9543716a82d2">&#9670;&nbsp;</a></span>setNumberOfRegionNeighbours()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setNumberOfRegionNeighbours </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>nghbr_number</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method allows to set the number of neighbours that is used for finding neighbouring segments. Neighbouring segments are needed for the merging process. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">nghbr_number</td><td>the number of neighbouring segments to find </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;{</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a7bd294c36d437e8ba497676bcb1b2708">region_neighbour_number_</a> = nghbr_number;</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ae23969f865f015f1010a1e72a56aaf48"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae23969f865f015f1010a1e72a56aaf48">&#9670;&nbsp;</a></span>setPointColorThreshold()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setPointColorThreshold </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>thresh</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method specifies the threshold value for color test between the points. This kind of testing is made at the first stage of the algorithm(region growing). If the difference between points color is less than threshold value, then they are considered to be in the same region. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">thresh</td><td>new threshold value for color test </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;{</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a8893f3b6bc24e92ee0d5d59a2391d63b">color_p2p_threshold_</a> = thresh * thresh;</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_a8893f3b6bc24e92ee0d5d59a2391d63b"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#a8893f3b6bc24e92ee0d5d59a2391d63b">pcl::RegionGrowingRGB::color_p2p_threshold_</a></div><div class="ttdeci">float color_p2p_threshold_</div><div class="ttdoc">Thershold used in color test for points.</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.h:253</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a152ff87cb08e3ef339ec92e339d08ffd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a152ff87cb08e3ef339ec92e339d08ffd">&#9670;&nbsp;</a></span>setRegionColorThreshold()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setRegionColorThreshold </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>thresh</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method specifies the threshold value for color test between the regions. This kind of testing is made at the second stage of the algorithm(region merging). If the difference between segments color is less than threshold value, then they are merged together. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">thresh</td><td>new threshold value for color test </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;{</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a2cb4ea53fab742aba1adf5d25a167994">color_r2r_threshold_</a> = thresh * thresh;</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_a2cb4ea53fab742aba1adf5d25a167994"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#a2cb4ea53fab742aba1adf5d25a167994">pcl::RegionGrowingRGB::color_r2r_threshold_</a></div><div class="ttdeci">float color_r2r_threshold_</div><div class="ttdoc">Thershold used in color test for regions.</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.h:256</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9ee93524947e897d1f42f50e2e3f91b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ee93524947e897d1f42f50e2e3f91b4">&#9670;&nbsp;</a></span>setResidualTestFlag()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setResidualTestFlag </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Allows to turn on/off the residual test. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>new value for residual test. If set to true then the test will be turned on </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_region_growing.html#ad1846b7d16b40f3187c42c81b80abc79">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;{</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#aa217ad1c027e687ff378edb852ca3052">residual_flag_</a> = value;</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_aa217ad1c027e687ff378edb852ca3052"><div class="ttname"><a href="classpcl_1_1_region_growing.html#aa217ad1c027e687ff378edb852ca3052">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::residual_flag_</a></div><div class="ttdeci">bool residual_flag_</div><div class="ttdoc">If set to true then residual test will be done during segmentation.</div><div class="ttdef"><b>Definition:</b> region_growing.h:295</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a749ce5bf131aa92578762d916fd314df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a749ce5bf131aa92578762d916fd314df">&#9670;&nbsp;</a></span>validatePoint()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1_region_growing_r_g_b.html">pcl::RegionGrowingRGB</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::validatePoint </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>initial_seed</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nghbr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool &amp;&#160;</td>
          <td class="paramname"><em>is_a_seed</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This function is checking if the point with index 'nghbr' belongs to the segment. If so, then it returns true. It also checks if this point can serve as the seed. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">initial_seed</td><td>index of the initial point that was passed to the <a class="el" href="classpcl_1_1_region_growing.html#a3ac4219f1374555e9dd76a7338905a6d" title="This method grows a segment for the given seed point. And returns the number of its points.">growRegion()</a> function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">point</td><td>index of the current seed point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nghbr</td><td>index of the point that is neighbour of the current seed </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">is_a_seed</td><td>this value is set to true if the point with index 'nghbr' can serve as the seed </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_region_growing.html#a71c8914239d04758cc94e59886b8308a">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;{</div>
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;  is_a_seed = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160; </div>
<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;  <span class="comment">// check the color difference</span></div>
<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;  std::vector&lt;unsigned int&gt; point_color;</div>
<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;  point_color.resize (3, 0);</div>
<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;  std::vector&lt;unsigned int&gt; nghbr_color;</div>
<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;  nghbr_color.resize (3, 0);</div>
<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;  point_color[0] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].r;</div>
<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;  point_color[1] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].g;</div>
<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;  point_color[2] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].b;</div>
<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;  nghbr_color[0] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nghbr].r;</div>
<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;  nghbr_color[1] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nghbr].g;</div>
<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;  nghbr_color[2] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nghbr].b;</div>
<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;  <span class="keywordtype">float</span> difference = <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a5246c94d7656b82c4b91575f3ec9ddf8">calculateColorimetricalDifference</a> (point_color, nghbr_color);</div>
<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;  <span class="keywordflow">if</span> (difference &gt; <a class="code" href="classpcl_1_1_region_growing_r_g_b.html#a8893f3b6bc24e92ee0d5d59a2391d63b">color_p2p_threshold_</a>)</div>
<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160; </div>
<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;  <span class="keywordtype">float</span> cosine_threshold = cosf (<a class="code" href="classpcl_1_1_region_growing.html#a87c8818e2c3eb306f1e44fa98bb55a89">theta_threshold_</a>);</div>
<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160; </div>
<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;  <span class="comment">// check the angle between normals if needed</span></div>
<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#a95f1b3605f488bcaa677d166f2b0f362">normal_flag_</a>)</div>
<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;  {</div>
<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;    <span class="keywordtype">float</span> data[4];</div>
<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;    data[0] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[0];</div>
<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;    data[1] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[1];</div>
<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;    data[2] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[2];</div>
<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;    data[3] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[3];</div>
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160; </div>
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;    Eigen::Map&lt;Eigen::Vector3f&gt; initial_point (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (data));</div>
<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;    Eigen::Map&lt;Eigen::Vector3f&gt; initial_normal (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>-&gt;points[point].normal));</div>
<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#a8d9411960ec9656fa6e727e0558d57f7">smooth_mode_flag_</a> == <span class="keyword">true</span>)</div>
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;    {</div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;      Eigen::Map&lt;Eigen::Vector3f&gt; nghbr_normal (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>-&gt;points[nghbr].normal));</div>
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;      <span class="keywordtype">float</span> dot_product = fabsf (nghbr_normal.dot (initial_normal));</div>
<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;      <span class="keywordflow">if</span> (dot_product &lt; cosine_threshold)</div>
<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;        <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;    }</div>
<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;    {</div>
<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;      Eigen::Map&lt;Eigen::Vector3f&gt; nghbr_normal (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>-&gt;points[nghbr].normal));</div>
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;      Eigen::Map&lt;Eigen::Vector3f&gt; initial_seed_normal (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>-&gt;points[initial_seed].normal));</div>
<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;      <span class="keywordtype">float</span> dot_product = fabsf (nghbr_normal.dot (initial_seed_normal));</div>
<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;      <span class="keywordflow">if</span> (dot_product &lt; cosine_threshold)</div>
<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;        <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;    }</div>
<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;  }</div>
<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160; </div>
<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;  <span class="comment">// check the curvature if needed</span></div>
<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#a1a5665f6c84af901ed018521b8b3677d">curvature_flag_</a> &amp;&amp; <a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>-&gt;points[nghbr].curvature &gt; <a class="code" href="classpcl_1_1_region_growing.html#a8afe22fadb13bbd9a0d90753129b336c">curvature_threshold_</a>)</div>
<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;    is_a_seed = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160; </div>
<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;  <span class="comment">// check the residual if needed</span></div>
<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#aa217ad1c027e687ff378edb852ca3052">residual_flag_</a>)</div>
<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;  {</div>
<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;    <span class="keywordtype">float</span> data_p[4];</div>
<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;    data_p[0] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[0];</div>
<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;    data_p[1] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[1];</div>
<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;    data_p[2] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[2];</div>
<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;    data_p[3] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[3];</div>
<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;    <span class="keywordtype">float</span> data_n[4];</div>
<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;    data_n[0] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nghbr].data[0];</div>
<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;    data_n[1] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nghbr].data[1];</div>
<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;    data_n[2] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nghbr].data[2];</div>
<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;    data_n[3] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nghbr].data[3];</div>
<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;    Eigen::Map&lt;Eigen::Vector3f&gt; nghbr_point (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (data_n));</div>
<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;    Eigen::Map&lt;Eigen::Vector3f&gt; initial_point (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (data_p));</div>
<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;    Eigen::Map&lt;Eigen::Vector3f&gt; initial_normal (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>-&gt;points[point].normal));</div>
<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;    <span class="keywordtype">float</span> residual = fabsf (initial_normal.dot (initial_point - nghbr_point));</div>
<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;    <span class="keywordflow">if</span> (residual &gt; <a class="code" href="classpcl_1_1_region_growing.html#ab9039b5534be233e1aa26bbadeecd42a">residual_threshold_</a>)</div>
<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;      is_a_seed = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;  }</div>
<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160; </div>
<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_a09c70d8e06e3fb4f07903fe6f8d67869"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">pcl::PCLBase::input_</a></div><div class="ttdeci">PointCloudConstPtr input_</div><div class="ttdoc">The input point cloud dataset.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:150</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a071c48f5d44f919aba6f8f386fd5e988"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::normals_</a></div><div class="ttdeci">NormalPtr normals_</div><div class="ttdoc">Contains normals of the points that will be segmented.</div><div class="ttdef"><b>Definition:</b> region_growing.h:313</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a87c8818e2c3eb306f1e44fa98bb55a89"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a87c8818e2c3eb306f1e44fa98bb55a89">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::theta_threshold_</a></div><div class="ttdeci">float theta_threshold_</div><div class="ttdoc">Thershold used for testing the smoothness between points.</div><div class="ttdef"><b>Definition:</b> region_growing.h:298</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a8afe22fadb13bbd9a0d90753129b336c"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a8afe22fadb13bbd9a0d90753129b336c">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::curvature_threshold_</a></div><div class="ttdeci">float curvature_threshold_</div><div class="ttdoc">Thershold used in curvature test.</div><div class="ttdef"><b>Definition:</b> region_growing.h:304</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a8d9411960ec9656fa6e727e0558d57f7"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a8d9411960ec9656fa6e727e0558d57f7">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::smooth_mode_flag_</a></div><div class="ttdeci">bool smooth_mode_flag_</div><div class="ttdoc">Flag that signalizes if the smoothness constraint will be used.</div><div class="ttdef"><b>Definition:</b> region_growing.h:289</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_ab9039b5534be233e1aa26bbadeecd42a"><div class="ttname"><a href="classpcl_1_1_region_growing.html#ab9039b5534be233e1aa26bbadeecd42a">pcl::RegionGrowing&lt; PointT, pcl::Normal &gt;::residual_threshold_</a></div><div class="ttdeci">float residual_threshold_</div><div class="ttdoc">Thershold used in residual test.</div><div class="ttdef"><b>Definition:</b> region_growing.h:301</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_r_g_b_html_a5246c94d7656b82c4b91575f3ec9ddf8"><div class="ttname"><a href="classpcl_1_1_region_growing_r_g_b.html#a5246c94d7656b82c4b91575f3ec9ddf8">pcl::RegionGrowingRGB::calculateColorimetricalDifference</a></div><div class="ttdeci">float calculateColorimetricalDifference(std::vector&lt; unsigned int &gt; &amp;first_color, std::vector&lt; unsigned int &gt; &amp;second_color) const</div><div class="ttdoc">This method calculates the colorimetrical difference between two points. In this case it simply retur...</div><div class="ttdef"><b>Definition:</b> region_growing_rgb.hpp:520</div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>segmentation/include/pcl/segmentation/<a class="el" href="region__growing__rgb_8h_source.html">region_growing_rgb.h</a></li>
<li>segmentation/include/pcl/segmentation/impl/<a class="el" href="region__growing__rgb_8hpp_source.html">region_growing_rgb.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_region_growing_r_g_b.html">RegionGrowingRGB</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
